#include <string.h>
#include "glib.h"
-
-/* #define MEM_PROFILE */
-/* #define MEM_CHECK */
+/* #define ENABLE_MEM_PROFILE */
+/* #define ENABLE_MEM_CHECK */
#define MAX_MEM_AREA 65536L
static GRealMemChunk *mem_chunks = NULL;
-#ifdef MEM_PROFILE
+#ifdef ENABLE_MEM_PROFILE
static gulong allocations[4096] = { 0 };
static gulong allocated_mem = 0;
static gulong freed_mem = 0;
-#endif /* MEM_PROFILE */
+#endif /* ENABLE_MEM_PROFILE */
#ifndef USE_DMALLOC
gpointer p;
-#if defined(MEM_PROFILE) || defined(MEM_CHECK)
+#if defined(ENABLE_MEM_PROFILE) || defined(ENABLE_MEM_CHECK)
gulong *t;
-#endif /* MEM_PROFILE || MEM_CHECK */
+#endif /* ENABLE_MEM_PROFILE || ENABLE_MEM_CHECK */
if (size == 0)
return NULL;
-#if defined(MEM_PROFILE) || defined(MEM_CHECK)
+#if defined(ENABLE_MEM_PROFILE) || defined(ENABLE_MEM_CHECK)
size += SIZEOF_LONG;
-#endif /* MEM_PROFILE || MEM_CHECK */
+#endif /* ENABLE_MEM_PROFILE || ENABLE_MEM_CHECK */
-#ifdef MEM_CHECK
+#ifdef ENABLE_MEM_CHECK
size += SIZEOF_LONG;
-#endif /* MEM_CHECK */
+#endif /* ENABLE_MEM_CHECK */
p = (gpointer) malloc (size);
g_error ("could not allocate %ld bytes", size);
-#ifdef MEM_CHECK
+#ifdef ENABLE_MEM_CHECK
size -= SIZEOF_LONG;
t = p;
p = ((guchar*) p + SIZEOF_LONG);
*t = 0;
-#endif /* MEM_CHECK */
+#endif /* ENABLE_MEM_CHECK */
-#if defined(MEM_PROFILE) || defined(MEM_CHECK)
+#if defined(ENABLE_MEM_PROFILE) || defined(ENABLE_MEM_CHECK)
size -= SIZEOF_LONG;
t = p;
p = ((guchar*) p + SIZEOF_LONG);
*t = size;
-#ifdef MEM_PROFILE
+#ifdef ENABLE_MEM_PROFILE
if (size <= 4095)
allocations[size-1] += 1;
else
allocations[4095] += 1;
allocated_mem += size;
-#endif /* MEM_PROFILE */
-#endif /* MEM_PROFILE || MEM_CHECK */
+#endif /* ENABLE_MEM_PROFILE */
+#endif /* ENABLE_MEM_PROFILE || ENABLE_MEM_CHECK */
return p;
gpointer p;
-#if defined(MEM_PROFILE) || defined(MEM_CHECK)
+#if defined(ENABLE_MEM_PROFILE) || defined(ENABLE_MEM_CHECK)
gulong *t;
-#endif /* MEM_PROFILE || MEM_CHECK */
+#endif /* ENABLE_MEM_PROFILE || ENABLE_MEM_CHECK */
if (size == 0)
return NULL;
-#ifdef MEM_PROFILE
+#ifdef ENABLE_MEM_PROFILE
size += SIZEOF_LONG;
-#endif /* MEM_PROFILE */
+#endif /* ENABLE_MEM_PROFILE */
-#ifdef MEM_CHECK
+#ifdef ENABLE_MEM_CHECK
size += SIZEOF_LONG;
-#endif /* MEM_CHECK */
+#endif /* ENABLE_MEM_CHECK */
p = (gpointer) calloc (size, 1);
g_error ("could not allocate %ld bytes", size);
-#ifdef MEM_CHECK
+#ifdef ENABLE_MEM_CHECK
size -= SIZEOF_LONG;
t = p;
p = ((guchar*) p + SIZEOF_LONG);
*t = 0;
-#endif /* MEM_CHECK */
+#endif /* ENABLE_MEM_CHECK */
-#if defined(MEM_PROFILE) || defined(MEM_CHECK)
+#if defined(ENABLE_MEM_PROFILE) || defined(ENABLE_MEM_CHECK)
size -= SIZEOF_LONG;
t = p;
p = ((guchar*) p + SIZEOF_LONG);
*t = size;
-#ifdef MEM_PROFILE
+#ifdef ENABLE_MEM_PROFILE
if (size <= 4095)
allocations[size-1] += 1;
else
allocations[4095] += 1;
allocated_mem += size;
-#endif /* MEM_PROFILE */
-#endif /* MEM_PROFILE */
+#endif /* ENABLE_MEM_PROFILE */
+#endif /* ENABLE_MEM_PROFILE */
return p;
{
gpointer p;
-#if defined(MEM_PROFILE) || defined(MEM_CHECK)
+#if defined(ENABLE_MEM_PROFILE) || defined(ENABLE_MEM_CHECK)
gulong *t;
-#endif /* MEM_PROFILE || MEM_CHECK */
+#endif /* ENABLE_MEM_PROFILE || ENABLE_MEM_CHECK */
if (size == 0)
return NULL;
-#if defined(MEM_PROFILE) || defined(MEM_CHECK)
+#if defined(ENABLE_MEM_PROFILE) || defined(ENABLE_MEM_CHECK)
size += SIZEOF_LONG;
-#endif /* MEM_PROFILE || MEM_CHECK */
+#endif /* ENABLE_MEM_PROFILE || ENABLE_MEM_CHECK */
-#ifdef MEM_CHECK
+#ifdef ENABLE_MEM_CHECK
size += SIZEOF_LONG;
-#endif /* MEM_CHECK */
+#endif /* ENABLE_MEM_CHECK */
if (!mem)
p = (gpointer) malloc (size);
else
{
-#if defined(MEM_PROFILE) || defined(MEM_CHECK)
+#if defined(ENABLE_MEM_PROFILE) || defined(ENABLE_MEM_CHECK)
t = (gulong*) ((guchar*) mem - SIZEOF_LONG);
-#ifdef MEM_PROFILE
+#ifdef ENABLE_MEM_PROFILE
freed_mem += *t;
-#endif /* MEM_PROFILE */
+#endif /* ENABLE_MEM_PROFILE */
mem = t;
-#endif /* MEM_PROFILE || MEM_CHECK */
+#endif /* ENABLE_MEM_PROFILE || ENABLE_MEM_CHECK */
-#ifdef MEM_CHECK
+#ifdef ENABLE_MEM_CHECK
t = (gulong*) ((guchar*) mem - SIZEOF_LONG);
if (*t >= 1)
g_warning ("trying to realloc freed memory\n");
mem = t;
-#endif /* MEM_CHECK */
+#endif /* ENABLE_MEM_CHECK */
p = (gpointer) realloc (mem, size);
}
g_error ("could not reallocate %ld bytes", size);
-#ifdef MEM_CHECK
+#ifdef ENABLE_MEM_CHECK
size -= SIZEOF_LONG;
t = p;
p = ((guchar*) p + SIZEOF_LONG);
*t = 0;
-#endif /* MEM_CHECK */
+#endif /* ENABLE_MEM_CHECK */
-#if defined(MEM_PROFILE) || defined(MEM_CHECK)
+#if defined(ENABLE_MEM_PROFILE) || defined(ENABLE_MEM_CHECK)
size -= SIZEOF_LONG;
t = p;
p = ((guchar*) p + SIZEOF_LONG);
*t = size;
-#ifdef MEM_PROFILE
+#ifdef ENABLE_MEM_PROFILE
if (size <= 4095)
allocations[size-1] += 1;
else
allocations[4095] += 1;
allocated_mem += size;
-#endif /* MEM_PROFILE */
-#endif /* MEM_PROFILE || MEM_CHECK */
+#endif /* ENABLE_MEM_PROFILE */
+#endif /* ENABLE_MEM_PROFILE || ENABLE_MEM_CHECK */
return p;
{
if (mem)
{
-#if defined(MEM_PROFILE) || defined(MEM_CHECK)
+#if defined(ENABLE_MEM_PROFILE) || defined(ENABLE_MEM_CHECK)
gulong *t;
gulong size;
-#endif /* MEM_PROFILE || MEM_CHECK */
+#endif /* ENABLE_MEM_PROFILE || ENABLE_MEM_CHECK */
-#if defined(MEM_PROFILE) || defined(MEM_CHECK)
+#if defined(ENABLE_MEM_PROFILE) || defined(ENABLE_MEM_CHECK)
t = (gulong*) ((guchar*) mem - SIZEOF_LONG);
size = *t;
-#ifdef MEM_PROFILE
+#ifdef ENABLE_MEM_PROFILE
freed_mem += size;
-#endif /* MEM_PROFILE */
+#endif /* ENABLE_MEM_PROFILE */
mem = t;
-#endif /* MEM_PROFILE || MEM_CHECK */
+#endif /* ENABLE_MEM_PROFILE || ENABLE_MEM_CHECK */
-#ifdef MEM_CHECK
+#ifdef ENABLE_MEM_CHECK
t = (gulong*) ((guchar*) mem - SIZEOF_LONG);
if (*t >= 1)
g_warning ("freeing previously freed memory\n");
mem = t;
memset ((guchar*) mem + 8, 0, size);
-#else /* MEM_CHECK */
+#else /* ENABLE_MEM_CHECK */
free (mem);
-#endif /* MEM_CHECK */
+#endif /* ENABLE_MEM_CHECK */
}
}
void
g_mem_profile (void)
{
-#ifdef MEM_PROFILE
+#ifdef ENABLE_MEM_PROFILE
gint i;
for (i = 0; i < 4095; i++)
g_print ("%lu bytes allocated\n", allocated_mem);
g_print ("%lu bytes freed\n", freed_mem);
g_print ("%lu bytes in use\n", allocated_mem - freed_mem);
-#endif /* MEM_PROFILE */
+#endif /* ENABLE_MEM_PROFILE */
}
void
g_mem_check (gpointer mem)
{
-#ifdef MEM_CHECK
+#ifdef ENABLE_MEM_CHECK
gulong *t;
t = (gulong*) ((guchar*) mem - SIZEOF_LONG - SIZEOF_LONG);
if (*t >= 1)
g_warning ("mem: 0x%08x has been freed: %lu\n", (gulong) mem, *t);
-#endif /* MEM_CHECK */
+#endif /* ENABLE_MEM_CHECK */
}
GMemChunk*